using System;
using System.Collections.Generic;
using System.Text;
using SharpMud.MudLib.Common.Entities;
using SharpMud.MudLib.Common.Resourcing;
using System.Threading;
using SharpMud.MudLib.Common.Environment.Persistance;

namespace SharpMud.MudLib.Common.Environment
{
    public interface IArea : IHasInstanceGuid, IGuidIdentifiedResourceHost<IRoom>, IRequiresExternalPulsing
    {
        /// <summary>
        /// Gets the name of the area
        /// </summary>
        string          Name                { get;}
        /// <summary>
        /// Gets the name of the person (or team) who built the area
        /// </summary>
        string          Author              { get;}
        
        /// <summary>
        /// Gets all the characters that are currently inhabiting the area
        /// </summary>
        ICharacter[]    GetCharacters();
        
        /// <summary>
        /// Gets all the (static) rooms that are in the area
        /// </summary>
        /// <remarks>Any virtual rooms that are not instantiated are not included. Virtual rooms that are occupied or active should be included.</remarks>
        IRoom[]         GetRooms();
    }
}
